home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / programs_-_include / LINUX / BUSMOUSE.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  3KB  |  105 lines

  1. #ifndef _LINUX_BUSMOUSE_H
  2. #define _LINUX_BUSMOUSE_H
  3.  
  4. /*
  5.  * linux/include/linux/busmouse.h: header file for Logitech Bus Mouse driver
  6.  * by James Banks
  7.  *
  8.  * based on information gleamed from various mouse drivers on the net
  9.  *
  10.  * Heavily modified by David giller (rafetmad@oxy.edu)
  11.  *
  12.  * Minor modifications for Linux 0.96c-pl1 by Nathan Laredo
  13.  * gt7080a@prism.gatech.edu (13JUL92)
  14.  *
  15.  * Microsoft BusMouse support by Teemu Rantanen (tvr@cs.hut.fi) (02AUG92)
  16.  *
  17.  * Microsoft Bus Mouse support modified by Derrick Cole (cole@concert.net)
  18.  *    8/28/92
  19.  *
  20.  * Microsoft Bus Mouse support folded into 0.97pl4 code
  21.  *    by Peter Cervasio (pete%q106fm.uucp@wupost.wustl.edu) (08SEP92)
  22.  * Changes:  Logitech and Microsoft support in the same kernel.
  23.  *           Defined new constants in busmouse.h for MS mice.
  24.  *           Added int mse_busmouse_type to distinguish busmouse types
  25.  *           Added a couple of new functions to handle differences in using
  26.  *             MS vs. Logitech (where the int variable wasn't appropriate).
  27.  *
  28.  */
  29.  
  30. #define MOUSE_IRQ        5
  31. #define LOGITECH_BUSMOUSE       0   /* Minor device # for Logitech  */
  32. #define MICROSOFT_BUSMOUSE      2   /* Minor device # for Microsoft */
  33.  
  34. /*--------- LOGITECH BUSMOUSE ITEMS -------------*/
  35.  
  36. #define    LOGIBM_BASE        0x23c
  37. #define    MSE_DATA_PORT        0x23c
  38. #define    MSE_SIGNATURE_PORT    0x23d
  39. #define    MSE_CONTROL_PORT    0x23e
  40. #define    MSE_INTERRUPT_PORT    0x23e
  41. #define    MSE_CONFIG_PORT        0x23f
  42. #define    LOGIBM_EXTENT        0x4
  43.  
  44. #define    MSE_ENABLE_INTERRUPTS    0x00
  45. #define    MSE_DISABLE_INTERRUPTS    0x10
  46.  
  47. #define    MSE_READ_X_LOW        0x80
  48. #define    MSE_READ_X_HIGH        0xa0
  49. #define    MSE_READ_Y_LOW        0xc0
  50. #define    MSE_READ_Y_HIGH        0xe0
  51.  
  52. /* Magic number used to check if the mouse exists */
  53. #define MSE_CONFIG_BYTE        0x91
  54. #define MSE_DEFAULT_MODE    0x90
  55. #define MSE_SIGNATURE_BYTE    0xa5
  56.  
  57. /* useful Logitech Mouse macros */
  58.  
  59. #define MSE_INT_OFF()    outb(MSE_DISABLE_INTERRUPTS, MSE_CONTROL_PORT)
  60. #define MSE_INT_ON()    outb(MSE_ENABLE_INTERRUPTS, MSE_CONTROL_PORT)
  61.  
  62. /*--------- MICROSOFT BUSMOUSE ITEMS -------------*/
  63.  
  64. #define    MSBM_BASE            0x23d
  65. #define    MS_MSE_DATA_PORT            0x23d
  66. #define    MS_MSE_SIGNATURE_PORT            0x23e
  67. #define    MS_MSE_CONTROL_PORT            0x23c
  68. #define    MS_MSE_CONFIG_PORT        0x23f
  69. #define    MSBM_EXTENT            0x3
  70.  
  71. #define    MS_MSE_ENABLE_INTERRUPTS    0x11
  72. #define    MS_MSE_DISABLE_INTERRUPTS    0x10
  73.  
  74. #define    MS_MSE_READ_BUTTONS             0x00
  75. #define    MS_MSE_READ_X                0x01
  76. #define    MS_MSE_READ_Y                   0x02
  77.  
  78. #define MS_MSE_START                    0x80
  79. #define MS_MSE_COMMAND_MODE             0x07
  80.  
  81. /* useful microsoft busmouse macros */
  82.  
  83. #define MS_MSE_INT_OFF() {outb(MS_MSE_COMMAND_MODE, MS_MSE_CONTROL_PORT); \
  84.                 outb(MS_MSE_DISABLE_INTERRUPTS, MS_MSE_DATA_PORT);}
  85. #define MS_MSE_INT_ON()  {outb(MS_MSE_COMMAND_MODE, MS_MSE_CONTROL_PORT); \
  86.                 outb(MS_MSE_ENABLE_INTERRUPTS, MS_MSE_DATA_PORT);}
  87.  
  88.  
  89. struct mouse_status {
  90.     unsigned char    buttons;
  91.     unsigned char    latch_buttons;
  92.     int        dx;
  93.     int        dy;    
  94.     int         present;
  95.     int        ready;
  96.     int        active;
  97.     struct wait_queue *wait;
  98.     struct fasync_struct *fasyncptr;
  99. };
  100.  
  101. /* Function Prototypes */
  102.  
  103. #endif
  104.  
  105.